"""力扣 1064"""
"""
给定已经按 升序 排列、由不同整数组成的数组 arr，返回满足 arr[i] == i 的最小索引 i。如果不存在这样的 i，返回 -1。
"""
"""
示例 1：

输入：arr = [-10, -5, 0, 3, 7]
输出：3
解释：对于给定的数组，arr[0] = -10，arr[1] = -5，arr[2] = 0，arr[3] = 3，因此输出为 3 。

示例 2：

输入：arr = [0, 2, 5, 8, 17]
输出：0
解释：arr[0] = 0，因此输出为 0 。

示例 3：

输入：arr = [-10, -5, 3, 4, 7, 9]
输出：-1
解释：不存在这样的 i 满足 arr[i] = i，因此输出为 -1 。
"""


def fixedPoint(arr):
    """
    :type arr: List[int]
    :rtype: int
    """
    for i in range(len(arr)):
        if i == arr[i]:
            return i
    else:
        return -1


def fixedPoint_v2(arr):
    """
    :type arr: List[int]
    :rtype: int
    """
    return min((i for i, n in enumerate(arr) if i == n), default=-1)


if __name__ == '__main__':
    li = [-10, -5, 0, 3, 7]
    print(fixedPoint(li))
